home *** CD-ROM | disk | FTP | other *** search
- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>(c) 1989 mkb<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
-
- ---------------------------------------------
- ---------------------------------------------
- -- Profiler V2.* [ATARI ST - GEM-Version] --
- ---------------------------------------------
- ---------------------------------------------
-
-
- Dokumentation Stand 21.04.89
- ----------------------------
-
-
-
- I. Einleitung in die Theorie
- II. Einführung in die Anwendung
- III. Hinweise
- IV. UPDATE-Service
- V. Hinweise für die Weitergabe
- VI. Beispiele
- VII. Hinweise auf die implementierte Version
-
- I. Einleitung in die Theorie
- -----------------------------
-
- Das Programm ist hervorgegangen aus der Lösung für die Aufgabe 3 der 2.
- Runde des BwINF 88/89. Die Benutzeroberfläche wurde eingefügt und das
- Filehandling vollständig neu teilw. in Assembler entwickelt. Das Profiler-
- System stellt nun einen Maximum an Komfort (durch GEM) und Komplexizität
- (eine Fülle von Parametern werden beachtet) bereit und kann Pascalprogramme
- in verschiedenen Stufen auf ihr Laufzeitverhalten überprüfen. Dabei können
- die Files sehr lang sein. Zudem kann das Prgramm leicht auf spezielle
- Pascal-Versionen angepasst werden, was allerdings von mir durchgeführt
- werden muß.
-
- Ein Profiler (engl. profile = Profil, kleine Biographie) stellt also ein
- Profil eines Pascal-Sourceprogrammes her und liefert eine kleine Biographie
- desselben Programmes nach einen Testlauf : Das Quellfile mit eingefügten
- Zählern.
-
- Auf deutsch : Man hat einen Pascaltext. Dieser wird nun untersucht (mit
- profile1.prg) und an relevanten Stellen Zählbefehle eingefügt. Dieses so
- gebildete Metafile wird nun testweise durchlaufen. Am Ende des Testlaufes
- werden die ermittelten Zählerstände (hier automatisch) auf Diskette ge-
- speichert. Aus diesem "Wertefile" und dem ursprünglichen Programmtext wird
- nun ein Zielfile gebildet, das aus dem alten Programmtext mit den Zähler-
- werten (an den entsprechenden Stellen als Kommentare eingefügt) besteht
- (profile2.prg). Aus diesen Zählerwerten kann man nun das Laufzeitverhalten
- des Programmes ablesen : Wie oft werden Schleifen insgesamt durchlaufen, wie
- oft Prozeduren/Funktionen aufgerufen, wie tief ist das Programm verschachtelt,
- welche Werte haben die Variablen, wie oft werden diese verwendet....
-
- Man spart sich also das mühsame Durchsehen der Programmtexte auf nicht-
- verwendete Variablen oder Prozeduren/Funktionen. Wenn eine Schleife noch
- öfter durchlaufen wird, als angenommen oder ein Programm tiefer rekursiv
- verschachtelt ist, als es eigentlich sollte, so kann man den Programmtext
- optimieren. Die Profilierung stellt also ein Hilfsmittel zur Programmierung
- von absolut 'sauberen' Programmen dar, was nützlich bei der Programmierung
- von Beispielprogrammen oder Programmen der allgemeinen Informatik, aber auch
- bei der Überprüfunh von diesen und anderen Projekten ist.
-
- Da die Analyse eines korrekten Programmes schon komplex genug ist, kann
- die vorliegende Version nur grobe Programmierfehler (wenn 'END's fehlen
- o.ä.) erkennen. Man verwendet den Profiler also zur abschliessenden Durch-
- sicht eines fertigen Programmes oder zum Testen von syntaxtisch richtigen
- Programmen, die nicht das tun, was sie sollen.
-
-
- II. Einführung in die Anwendung
- -------------------------------
-
- Das Profilersystem besteht aus 2 Teilen (intern sogar aus drei). Der erste
- Teil 'profile1.prg' liest den Quellcode ein und erzeugt ein Testfile.
- Der zweite Teil 'profile2.prg' mischt den ursprünglichen Quelltext und
- erzeugt das Zielfile mit eingestreuten Zählerwerten.
-
- Um die einzelnen Teile zu starten, muß man sich im GEM-Desktop oder einer
- GEM-Schell befinden. Anklicken von 'profile1.prg' oder 'profile2.prg'
- lädt das entsprechende Programm, welches 'profile1.rsc' bzw. 'profile2.rsc'
- nachlädt. Weiter muß sich auf dem aktuellen Ordner noch 'profile.inf'
- vorhanden sein.
-
- Man befindet sich in der Benutzeroberfläche. Alle Optionen, die wählbar sind,
- können durch Anklicken im Menü betätigt werden. Bei Einträgen mit drei
- Punkten kommt noch eine zusätzliche Auswahlbox.
-
- Die Menüpunkte, die sich aufgrund der aktuellen Eingabesituation (noch kein
- File gewählt o.ä) nicht anwählen lassen, d.h. gesperrt sind, werden nach
- Tätigkeiten, durch die die Funktionen der Menüpunkte sinnvoll werden,
- wieder als anwählbar gesetzt. Alle Optionen lassen sich erst nach einem
- Profilerlauf anwählen.
-
- Erklärung der Menüpunkte :
-
- "DESK"-Menu
-
- "Über Profiler" :
-
- Eine Infobox mit der Versionsnummer (s.u.) und dem
- Programmnamen erscheint. Wichtig bei den verschiedenen
- Pascal-Versionen.
-
- "DATEI"-Menu
-
- "Öffne Quellfile..." [profile1.prg] :
-
- Das Auswählen aller Files wird mit der eingebauten oder
- einer selbst installierten FILESELECTOR-Box durchgeführt.
- Die übliche Bedienung. Verschiedene Laufwerke können
- angewählt werden, Harddisk/Ram/Eprom-Disks werden unter-
- stützt.
- Öffne das Quellfile. Damit ist das Pascal-Programm gemeint,
- welches profiliert werden soll.
- Dieses File muß normalerweise im ASCII-Format vorliegen
- (bei Sonderversionen siehe 'Hinweise zu den Dateien').
- Das File muß bereits auf der Diskette vorhanden sein, nach
- Anwählen wird der Name mit vollständiger Dateipfadbe-
- zeichnung rechts oben in der Menüzeile als 'source' an-
- gezeigt.
-
- "Öffne Wertefile..." [profile2.prg] :
-
- Öffne das Wertefile. Damit ist das File gemeint, das
- automatisch erzeugt wird, wenn Sie das Testfile (s.o.)
- mit ihrem Pascal-Compiler durchlaufen haben. Es enthält
- die Zählerstände. Die Files, die mit diesem Punkt geöffnet
- werden, müssen einerseits schon auf Dikette vorliegen,
- dem entsprechenden Dateiformat (also ASCII oder Sonder-
- format) genügen und außerdem tatsächlich Wertefiles sein.
- Das Programm erkennt die Wertefiles an einem bestimmten
- Text im File. Ist dieser Text nicht in der Datei enthalten,
- so wird eine Warnmeldung ausgegeben, das File dann aber
- geöffnet (zu Prüfzwecken Ihrerseits etc.). Wird diese
- Warnmeldung ('Kein Wertefile') ausgegeben, so kann dieses
- File nicht für die Profilierung verwendet werden.
- Auch hier wird das angewählte File rechts oben in der
- Menüleiste mit vollständiger Pfadbezeichnung angeschrieben.
-
- "Bestimme Testfile..." [profile1.prg] :
-
- Öffne das Testfile.
- Die Option 'bestimmt' ein Testfile, da das angewählte
- File nicht unbedingt auf der Diskette schon vorhanden ist.
- Wählt man ein File aus, so wird dieses automatisch neu
- erzeugt, ist es schon vorhanden, so wird es lediglich
- geöffnet.
- Im Zielfile befindet sich nach dem Profilerlauf der
- Quelltext für das Testprogramm, daher hat das File den
- Namen 'Testfile'.
-
- "Bestimme Zielfile..." [profile2.prg] :
-
- Dieser Menüpunkt ist nur unter profile2.prg wählbar.
- Funktioniert wie 'Bestimme Testfile' in profile1.prg,
- nach dem Profilerlauf befindet sich aber der Endtext,
- das ürsprüngliche Programm mit eingefügten Zählern, in
- diesem File.
-
- "Zeige XXX..." :
-
- Diese Menüpunkte bewirken das Öffnen eines Anzeigefensters
- und zeigen das entsprechende File seitenweise. Zum Um-
- blättern auf die nächste Seite eine beliebige Taste be-
- tätigen, zum vorzeitigen Abbruch die Taste <E> betätigen.
-
- "Konvertieren"-Menu
-
- "Variablenzählung ein"/"Variablenzählung aus" [profiler_1.prg] :
-
- Mit Anwählen des entsprechenden Menüpunktes (entsprechend
- der aktuellen Eingabesituation wird der eine durch den
- anderen ersetzt !) wird die Option Variablenzählung ein-
- geschaltet (bei Anklicken von "Variablenzählung ein" !)
- bzw. ausgeschaltet. Das 'ein' oder 'aus' bezeichnen den
- entsprechenden Zustand NACH dem Anwählen des Punktes.
- Haben sie "Variablenzählung ein" angewählt, so werden Sie
- von einer Alert-Box auf die wichtigsten Nachteile der
- Variablenzählung aufmerksam gemacht. Sie können noch ab-
- brechen, wenn Sie die Nachteile nicht eingehen können.
- Weitere Einzelheiten siehe Teil IV.
-
- "Druckprotokoll ein" [profiler_2.prg] :
-
- Dieser Menüpunkt lenkt während des Profilerdurchlaufes die
- Ausgabe des Zieltextes zusätzlich (!) auf den Drucker
- (daher 'Protokoll'). Auch hier bezeichnet 'ein'/'aus' den
- Zustand NACH dem Anwählen des Menüpunktes.
- Der Profilierungsvorgang wird entsprechend der Geschwindig-
- keit des EPSON/IBM kompatiblen Druckers an der Parallel-
- Schnittstelle verlangsamt. Ein Druckerspooler ist nützlich !
-
- "Konvertreport" :
-
- Dieser seltsam klingende Menüpunkt zaubert nach Anwahl ein
- wunderschönes Formular auf den Bildschirm, welches zusätz-
- liche Angaben über den letzten (!) Profilierungsvorgang
- enthält.
- Die Angabe der verwendeten Files ist eine Gedächtnisstütze.
- Die Angabe über Variablenprüfung ist schon wichtiger.
- War sie überhaupt an (entsprechend ein 'EIN'/'AUS' in der
- mittleren Box) ? Wieviele Variablen wurden gezählt
- ('Variablen') ? WIeviele skalare Typen (INTEGER,BYTE, etc)
- waren daran beteiligt ('Skalare',rechts oben in der
- Box) ? Entsprechend : Wie viele reale Typen (REAL, etc)
- waren daran beteiligt ?
- Nur wenige Variablentypen können einfach mit zwei weiteren
- Zählern zur Bereichsüberprüfung herangezogen werden : so
- alle skalaren Typen und REALe. Welche Typen nun als
- REAL/Skalar behandelt wurden, teilt der untere Teil der
- mittleren Box mit : Auf 'Skalar' folgen die ersten Namen
- für alle Typen, die das Programm als INTEGER-like behandelt.
- Auch eigene Variablendefinitionen können gezählt werden und
- auf ihre Bereiche geprüft werden (s.u.). Nicht alle
- Namen passen u.U. in die Box.
- Nach 'Real' folgen die Namen der REAL-like-Variablen.
- Achtung : Bei eingeschalteter Variablenprüfung wird das
- Vorkommen JEDER Variable quantitativ überprüft - aber nur
- bei INTEGER/REAL-like-Variablen wird eine zusätzliche
- Bereichsprüfung durchgeführt. Diese Bereichsprüfung kann
- man durch 'profile.inf' steuern.
- Der Wert nach 'Bedarf' stellt den Speicherplatz dar, den
- die Zähler für die Bereichsüberprüfung ausmachen - nicht
- den Speicherplatz aller Zähler - man kann so überprüfen,
- ob noch genug Speicher vorhanden ist.
- Die Werte 'Zeilen XXXFile' werden durch Zählung beim Profi-
- lierungsvorgang gewonnen, der Wert 'Filegrößendifferenz'
- bezeichnet den Prozentsatz, den die Länge des erzeugten
- Files im Gegensatz zum Quellfile (auch in profile2.prg !)
- dastellt. Er ist wichtig, um den Speicherplatz zu über-
- schlagen.
- Die 'Zeit' stellt die Zeitspanne dar, die der Profilierungs-
- vorgang mit allen Diskarbeiten benötigt. Nimmt man eine
- RAM-Disk statt Disketten, so läßt sich die benötigte Zeit
- sehr erheblich verringern (!).
-
- "Start" :
-
- Der Profilierungsvorgang wird gestartet.
- Wurde nur ein Quellfile/Wertefile gewählt, aber noch
- kein Zielfile, so wird als Testfile in 'profile1.prg'
- ein File mit der selben Dateibezeichnung wie das Quellfile
- aber mit der Extension '.TST' erzeugt; in 'profile2.prg'
- wird ein Zielfile mit der Extension '.PRO' erzeugt.
- Eine Infobox informiert über den Fortgang der Profilierung.
- Die aktuelle Zeilennummer wird angezeigt.
- Fehler werden in einer zusätzlichen Box angezeigt.
- Nach einem Fehler wird die Profilierung beendet.
- Wird die Profilierung erfolgreich oder mit Fehler beendet,
- so wird dies in einer Alertbox verkündet, ebenso die
- Anzahl Fehler. Nur wenn diese '0' ist, sollte weiterge-
- arbeitet werden.
- Übrigens werden nicht alle Fehler erkannt : Schreibfehler
- werden oft vernachlässigt, da ansonsten die Fehlerüberprü-
- fung das Programm verlangsamen würde. Es wird daher em-
- pfohlen, nicht allzu volle DIsketten oder no-name-Ware zu
- verwenden.
- Eine RAM-Disk (ordentlich groß) leistet hier Wunderdinge
- (in der 512kB-Version sind dafür noch ca 80kB frei!).
-
-
- III. Hinweise
- -------------
-
- Hinweise zu den Dateien
- - - - - - - - - - - - -
-
- Das Profilersystem kennt vier Filetypen :
- a) Quellfile [auch Source] ist IHR PASCALTEXT. Das File hat keine fest-
- gelegte Endung, '.PAS' wäre sinnvoll.
- Das Quellfile muß dem TURBO-Pascal-Standard gehorchen, wobei nur die
- Syntax der überprüften Wörter wichtig ist (s.u.).
- Das Quellfile darf sämtliche nach der Sprachdefinition zulässigen
- Anweisungen und Kniffe (z.B. kein Semikolon vor END) enthalten.
- Jedes Programm, das compiliert werden kann, kann auch profiliert
- werden (rein theoretisch ohne Ausnahme). Auf (hoffentlich) sämtliche
- Sonderfälle wird eingegangen.
- b) Testfile ist DER PASCALTEXT MIT ZUSÄTZLICHEN ANWEISUNGEN ZUR ZÄHLER-
- BEHANDLUNG. Der Testtext ist so verändert, daß Sie Ihr Programm bestimmt
- nicht mehr erkennen (schauen Sie sich ein solches File mal an !).
- Obwohl der Testtext völlig anders ist, macht er (meistens) genau das
- gleiche wie das Quellprogramm. Man erkennt allerhöchstens an der
- Geschwindigkeit, daß ein Testlauf stattfindet : Keine Bildschirmmeldung
- wird verfälscht (übrigens auch Kommentare im Quelltext nicht !), kein
- Ergebnis verändert. Lediglich am Ende des Testlaufes wird auf das
- Diskettenlaufwerk zurückgegriffen, eine zusätzlich eingefügte Bildschirm-
- meldung verkündet, was Sie als nächstes zu tun haben.
- Das TESTFILE hat als Standartwert die gleiche Dateibezeichnung wie das
- QUELLFILE, aber die Extension '.TST' (das kann man aber durch Bestimmen
- des Testfiles vor dem Profilieren in profile1.prg selber bestimmen).
- Am Ende eines Testlaufes wird ein
- c) WERTEFILE geschrieben. Ein WERTEFILE ENTHÄLT DIE ZÄHLERSTANDE DES TEST-
- LAUFES ALS REAL-WERTE, zusätzlich Informationen über Variablenzählung,
- Sourcefile und Anzahl der Zähler. Weiter ist eine Dateikennung für
- 'profile2.prg' enthalten.
- Wichtig : Die Diskette, auf der das TESTFILE ist, muß im SELBEN LAUF-
- WERK eingelegt sein wie beim ersten Profilerdurchlauf, wenn das
- WERTEFILE erzeugt wird (nach dem Testlauf), denn das WERTEFILE hat die
- gleiche Dateibezeichnung wie das TESTFILE, aber die Extension '.WRT'
- (immer !). Aus dem Quellfile und dem Wertefile machen Sie mit
- 'profile2.prg' das
- d) ZIELFILE. Das ZIELFILE ist IHR PASCALTEXT MIT DEN ZÄHLERSTÄNDEN DES
- WERTEFILES ALS KOMMENTAR EINGEFÜHT, und zwar an der entsprechenden
- Stelle (s.u.). Das ZIELFILE hat als Standardextension '.PRO', diese
- kann aber in 'profile2.prg' durch 'Bestimme Zielfile' genauso geändert
- werden wie der gesamte Dateiname.
- Während das ZIELFILE erzeugt wird, muß die Diskette mit dem QUELLFILE
- im selben Laufwerk eingelegt sein wie beim Profilerlauf von profile1.prg.
-
- Nach Erzeugen des Zielfiles können die übrigen drei Files gelöscht werden.
- Während der Profiliervorgänge ist es nicht empfehlenswert, die Diskette(n)
- mit den vier Files (soweit erzeugt) aus dem Laufwerk zu nehmen oder die
- Anordnung der Dateien zu ändern, etwa durch Umbenennen.
- Wichtig :
- Das QUELLFILE wird auch noch in 'profile2.prg' benötigt, und zwar unter
- demselben Namen, wie es in 'profile1.prg' bezeichnet wurde - hat sich
- dieser geändert, wird das nicht erkannt. Auch sollte 'profile.inf' nicht
- geändert werden.
-
- Hinweise zum Speicherbedarf
- - - - - - - - - - - - - - -
-
- Das Profiler-System ist ausgelegt für 512kB, wobei noch ca. 80kB frei für
- eine RAM-Disk sind.
- Es können Files unbeschränkter Länge profiliert werden - beschränkt ist
- allerdinga die Anzahl von Prozeduren,Funktionen,BEGINs,Schleifen jeder
- Art und, falls Variablenzählung angewählt, die Anzahl Variablen. In der
- vorliegenden Version können Sie maximal 600 Schleifen verwenden, 9
- Prozeduren/Funktionen-Ebenen und bis zu 250 Variablen, die beliebig auf
- alle 9 Ebenen verteilt werden dürfen. Durch die Einteilung in Ebenen können
- lokale und globale Variablen selbst mit gleichen Namen korrekt inter-
- pretiert werden.
- Es gibt aber noch eine Einschränkung : Eine Anweisung darf maximal 65
- verschiedene Variablen enthalten, es können also keine Prozeduren mit
- 66 verschiedenen Übergabeparametern korrekt profiliert werden.
- Müssen größere Files profiliert werden, so sollten Sie auf die Variablen-
- zählung oder zumindest auf die Bereichsprüfung verzichten. Speicherüber-
- läufe werden übrigens angezeigt.
- Bei komplexen Programmen ist der Geschwindigkeit wegen ebenfalls ein Ein-
- schränken der Bereichsüberprüfung vorzuschlagen.
- Sollten Sie eine 'größere' Version benötigen : siehe Update-Service.
-
- Hinweise zu 'profile.inf'
- - - - - - - - - - - - - -
-
- Hiermit kann man die Bereichsprüfung steuern. Will man statt INTEGER-
- Variablen BYTEs oder LONG_INTEGERs zählen, so ändert man 'profile.inf'
- mit einem Texteditor. Das File muß als ASCII-Text so vorliegen :
-
- 1 [Skalarname 1] Beispiel :
- 2 [Skalarname 2] ----------
- 3 [Skalarname 3]
- 4 [Skalarname 4] 1 INTEGER
- 5 [Skalarname 5] 2 ENDE
- 6 ENDE 3 REAL
- 7 [Realname 1] 4 ENDE
- 8 [Realname 2] 5 8
- 9 [Realname 3]
- 10 [Realname 4]
- 11 [Realname 5]
- 12 ENDE
- 13 {Speicherbedarf einer REAL-Variablen in Bytes}
-
- Die Zeilen in eckigen Klammern sind optional. Die Zeile in geschweiften
- Klammern muß eine Zahl enthalten. Sie wird für die Speicherplatzberechnung
- verwendet.
- Läßt man alle Typennamen weg, so werden die Vorkommen aller Variablen
- weiterhin gezählt, aber keine Bereichsprüfung angewendet (bringt
- Geschwindigkeits/Speicherplatzvorteile). Es wird empfohlen, mehrere
- solche Files anzulegen für verschiedene Stufen der Profilierung. Die ge-
- wünschte Stufe kann durch Umbenennen des entsprechenen Files in
- 'profile.inf' eingestellt werden.
- Das File muß im Aufrufordner von 'profile1.prg'/'profile2.prg' stehen.
-
- Hinweise zum Verarbeiten der profilierten Zielfiles
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- Der Zählerstand, der nach dem Testlauf feststeht, wird als Kommentar stets
- in die Zeile eingefüft, wo das gezählte Objekt beginnt oder ausgeführt
- wird. Passt ein Kommentar nicht mehr in die Zeile, so wird eine neue Zeile
- eingefügt.
- Wenn durch mehrere gezählte Objekte in einer Zeile mehrere Kommentare ein-
- gefügt wurden, so ließt man die Kommentare von links nach rechts : Der
- erste Kommentar gehört zu dem ersten gezählten Objekt usw.
-
- Folgende Wörter führen zu Bildung eines Zählkommentares :
-
- "VAR variable[,variable...] : <Typ>"
-
- Es wird ein Kommentar der Form
- "{ variable : <zählerstand> [Min <zählerstand> Max <zählerstand>] }"
- eingefügt. Der Teil in eckigen Klammern wird nur bei entsprechenden Typen
- eingefügt (REAL/INTEGER). Die Variablenzählung wird nur bei einge-
- schalteter Variablenzählung angewendet.
- Für jede Variable (auch in Prozedurköpfen oder mit Kommas verbunden) wird
- ein eigener Kommentar mit Namen eingefügt.
- Es wird das Vorkommen der Variable in Rechenausdrücken gezählt, nicht
- jedes Vorkommen. So führt der Ausdruck "I:=I+I" lediglich zu einem
- Erhöhen des Zählerstandes um die Zahl "1". Die Minima/Maxima-Werte werden
- nach dem Rechenausdruck überprüft. Es zählen auch Verwendungen der
- Variable als Übergabeparameter bei Prozedur/Funktionsaufrufen.
- Steht der Zähler nach dem Lauf auf "0", so werden keine Minima/Maxima-
- Werte, sondern drei Querstriche angegeben (hiermit ist gemeint, daß
- die Variable überhaupt nicht verwendet wurde - die Variablenwerte können
- natürlich "0" sein).
- Bei lokalen/globalen Variablen kann die normale Namengebungsdefinition
- angewendet werden. Ebenso bei Variablen in Prozedurköpen.
-
- "PROCEDURE name [(<Parameterdefinitionen>)] ;"
- "FUNCTION name [(<Parameterdefinitionen>)] : <Typ> ;"
-
- Es wird ein Kommentar der Form
- "{ <Zählerstand> }"
- eingefügt. Der Zählerstand ermittelt sich durch die Summenbildung aller
- Aufrufe dieser Prozedur/Funktion, egal ob diese Selbstaufrufe oder
- Fremdaufrufe waren.
- Hat sich während des Testlaufes ergeben, daß die Prozedur/Funktion
- rekursiv programmiert ist, wird zusätzlich noch ein Kommentar der Form
- "{ Max. Rekursion: <Zählerstand> }"
- eingefügt. Der Zählerstand enthält nicht die Summe der Selbstaufrufe,
- sondern die Tiefe der Rekursion. Ist Zählerstand etwa 100, so kann sich
- die Prozedur 1000mal aufrufen, aber sie hat sich nur 100mal am Stück
- aufgerufen (wichtig bei Backtrackingalghorithmen).
- Bei Übergabeparamterdefinitionen wird Variablenzählung angewendet, falls
- aktiviert.
-
- "BEGIN" (ohne alles), "FOR-DO", "REPEAT", "WHILE"
-
- Es wird ein Kommentar der Form
- "{ <Zählerstand> }"
- eingefügt. Der Zählerstand wird bei jedem Durchlauf des Blockes
- hochgezählt, stellt also die Summe aller Durchläufe dar. In Prozeduren :
- Wenn der Zähler auf 100 steht, so heißt daß, daß insgesamt der
- Block 100mal durchlaufen wurde, nicht aber, daß pro Prozeduraufruf der
- Block 100mal durchlaufen wurde (!).
-
- "IF-THEN/ELSE"
-
- In der Zeile jedes der zwei Wörter-Einheiten wird jeweils (!) ein
- Kommentar der Form
- "{ <Zählerstand> }"
- eingefügt, wobei die Zählerstände wie bei "BEGIN" (s.o.) ermittelt werden.
- Bei THEN/ELSE stellt die Zahl die tatsächlichen Durchläufe dar. Die Zahl
- der Durchläufe des IF-Wortes allein ergibt sich durch vorherige Zähler-
- kommentare z.B. bei einem BEGIN oder aus der Summe der Zähler des
- THENs und des ELSEs.
- Das ELSE kann weggelassen werden.
-
- "CASE-OF/:/ELSE"
-
- In der Zeile jedes der drei Wörter wird jeweils ein Kommentar der Form
- "{ <Zählerstand> }"
- eingefügt, wobei die Zählerstände wie bei "BEGIN" (s.o.) ermittelt werden.
- Bei :/ELSE stellt die Zähl die tatsächlichen Durchläufe dar, sie kann
- sich von der Zahl bei CASE-OF unterscheiden.
- Bei jedem ':' wird ein eigener Kommentar angefügt.
- Das ELSE kann wegglesassen werden.
-
- Auf den ersten Blick erscheinen die Möglichkeiten begrenzt, tatsächlich kann
- man aber damit die Anzahl Aufrufe sämlicher (!) Anweisungen über die
- Zahl Schleifendurchläufe und Prozeduraufrufe etc. berechnen, bei übersicht-
- licher Programmierung läßt sich dies praktisch sofort ablesen. Außerdem
- kann mann sonst den Programmtext gar nicht mehr lesen. Weitere Wörter
- könnten aber leicht implementiert werden (bestimmte Operatoren o.ä.)
-
- IV. Update-Services
- - - - - - - - - - -
-
- Ein solch komplexes Programm wie dieses Profilersystem (schließlich muß
- ein 'freier' Quelltext vollständig auf einige für die Profilierung
- wichtige Parameter reduziert werden und daher das Programm genau analy-
- siert werden) muß zwangsläufig in der Anfangsphase noch Fehler enthalten.
- Das System wurde selbstverständlich mit verschiedensten Files (einige
- davon sind als Beispiele auf der Diskette) überprüft und auch schon einige
- Fehler verbessert. Dennoch läßt sich ein kleiner Denk/Tippfehler nicht
- immer erkennen.
- Auch auf verschiedene Versionen kann nur bedingt eingegangen werden.
- Verwendet wurde hier die Syntax der TURBO-Pascal-Versionen 3.XX, die
- auch von KatCe-Pascal verwendet wird. Es kommt allerdings nur auf
- die oben erläuterten Worter an, die in absolut jeder Pascal-Version
- genau so implementiert sein werden.
- Ein größeres Problem stellt das Erzeugen des Wertefiles durch das Testfile
- dar, denn das Filehandling wird doch von verschiedenen Pascalversionen
- anders behandelt. Auch hier lehnt sich der Profiler an TURBO-Pascal an.
- Das Format der Files ist ASCII. Andere Fileformate können nicht verarbeitet
- werden.
- Das Programm ist für 512kB. Die Anzahl Zähler ist begrenzt (siehe oben).
-
- Tritt also ein Fehler auf, oder kommen Sie mit einigen der oben angeführten
- Punkte in Konflikt (anderes Filesystem der Pascal-Version) bzw. wollen
- Sie eine 1MB-Version oder haben Sie einen Wunsch, welche Erweiterung
- noch nützlich wäre (auch bloße Anregungen und Kritik sind erwünscht),
- so machen Sie folgendes :
-
- a) bei Fehler : Das Quellfile, in dem eine Struktur vorkommt, die fehler-
- haft verarbeitet wird auf eine Diskette speichern, auf die auch die Pro-
- filerprogramme mit allen Nebenfiles (s.o.) kommt. Kurze Beschreibung,
- was nicht geht (wann und wo der Fehler auftritt, evtl. Ortung der
- fehlerhaften Stelle) mitliefern.
- b) bei Versionsproblemen : Wird das Quellprogramm zwar richtig profiliert,
- das Testfile kann aber nicht mehr compiliert werden, so verfahren Sie
- wie bei a). Weiter müssen Sie aber noch eine möglichst genaue Beschrei-
- bung des Filesystems der Pascalversion beilegen. Am besten sind Kopien
- der entsprechenden Seiten des Handbuches. Falls das Quellprogramm wegen
- eines falschen Formates nicht gelesen werden kann, so legen Sie
- zusätzlich eine ausführliche Beschreibung des Formats bei, vielleicht
- aich ein Beispielprogramm.
- c) bei Speicherwünschen : Diskette mit gewünschter Größe (bis 1mB).
- d) bei Sonderwünschen : Beschreibung der gewünschten Funktionen oder
- Erweiterungen mit dem Profilersystem auf eine Diskette.
-
- Die Diskette schicken Sie an meine Adresse (1.70 Porto, Rückporto !).
- Bei Fehlern und Versionsproblemen erhalten Sie Ihre Diskette mit einer
- bereinigten Version so schnell wi möglich zurück, bei Sonderwünschen
- bekommen Sie die Diskette zurück, falls der Wunsch verwirklicht werden
- kann.
-
- Ich erwarte kein Honorar o.ä.
-
- Es werden Versionen für die wichtigsten Pascal-Kompiler angestrebt, die
- schon fertig angepasst sind. Bitte lassen Sie das Profiler-System daher
- an Ihre Version anpassen - vielleicht existiert auch schon eine passende
- Version !
-
- Auch über Anregungen, Kritik o.ä. freue ich mich.
-
- Adresse (Daten beachten!) :
-
- bis 1.8.89 : ab 1.8.89 :
-
- Matthias Berger Matthias Berger
- Schlesierstr. 41 Im Wismat 31
-
- 8034 Germering 8000 München 60
-
-
-
- V. Weitergabe-Hinweise
- - - - - - - - - - - -
-
- Das Programm kann frei verbreitet werden, allerdings sollen veränderte
- Versionen nur nach Mitteilung an mich (für die Übersicht meinerseits)
- weitergegeben werden. Die Copyrighthinweise dürfen nicht verändert werden.
- Das System muß mit allen Nebenfiles weitergegeben werden, d.h.
- profile1.prg/profile2.prg/profile1.rsc/profile2.rsc/profile.inf/
- profile.doc.
-
- Das Programm ist nach neuesten Erkenntnissen der Bedienungstheorie und
- der informatischen Grundlagenforschungen auf einem der moderndsten und
- schnellsten ATARI ST geschrieben worden. In das Programm flossen mannig-
- faltige Innovationen und Komplikationen ein, welche nicht allein durch
- ein bloßes Mitliefern des Quelltextes in hinreichender Weise eruiert werden
- könnten. Wollen Sie die verschlungenen Gedangengänge dieses Anwendungs-
- programmes dennoch nachvollziehen, so fordern Sie die beiden Quelltexte
- an. Bitte Rückporto (für 50 Seiten DIN A4...). Sie sollten über umfang-
- reiche PASCAL und ASSEMBLER-Kenntnisse verfügen und viel Zeit aufbringen
- könen.
-
- VI. Beispiele
- - - - - - - -
-
- Auf der Diskette müssten sich vier Ordner mit den Files
- 'komposer.XXX'/'taler.XXX'/'mendel.XXX'/'prim.XXX'/tom07.XXX'/'tom19.XXX'
- befinden. Die Benutzung der Progrämmelchen steht jeweils am Ende des
- jeweiligen Files mit '.pas'-Endung, das File mit '.tst'-Endung ist
- das dazugehörige Testfile, das File mit '.wrt' wurde beim Ausführen des
- '.tst'-Textes erzeugt und aus den vorhergehenden Files wurde das File
- mit '.pro' gemischt.
- Alle Files gehören zu einem Testlauf, welche Eingaben beim Ausführen des
- Programmes getätigt wurden. Welche Ergebnisse das Programm korrekterweise
- liefern müsste, steht ebenfalls am Ende des jeweiligen '.pas'-Files.
- Was man bei dem Progranmm besonders gut sehen kann, z.B. die Behandlung
- rekursiver Prozeduren, wird angegeben.
- Sie können mit diesen Files die Bedienung des Profilers üben und testen,
- da die Ergebnisse vorgegeben sind.
-
- VII. Hinweise auf die implementierte Version
- - - - - - - - - - - - - - - - - - - - - - -
-
- Die mitgelieferte Version ist 2.KatCe/ASCII.
- Die Syntax ist TURBO/KatCe-Pascal, das Filesystem ASCII.
- KatCe-User : Bitte Version mit KatCe-Filesystem anfordern !
-
-
- ----------------- Ende der Dokumentation vom 21.04.89 --------------------
-
-
-
- (c)89mkb
-
-
-
-